diff --git a/media/libtheora/lib/arm/armbits.s b/media/libtheora/lib/arm/armbits.s
--- a/media/libtheora/lib/arm/armbits.s
+++ b/media/libtheora/lib/arm/armbits.s
@@ -12,16 +12,22 @@
 ;
 ; function:
 ;   last mod: $Id: armbits.s 17481 2010-10-03 22:49:42Z tterribe $
 ;
 ;********************************************************************
 
 	AREA	|.text|, CODE, READONLY
 
+	; Explicitly specifying alignment here because some versions of
+	; gas don't align code correctly. See
+	; http://lists.gnu.org/archive/html/bug-binutils/2011-06/msg00199.html
+	; https://bugzilla.mozilla.org/show_bug.cgi?id=920992
+	ALIGN
+
 	EXPORT oc_pack_read_arm
 	EXPORT oc_pack_read1_arm
 	EXPORT oc_huff_token_decode_arm
 
 oc_pack_read1_arm PROC
 	; r0 = oc_pack_buf *_b
 	ADD r12,r0,#8
 	LDMIA r12,{r2,r3}      ; r2 = window
diff --git a/media/libtheora/lib/arm/armfrag.s b/media/libtheora/lib/arm/armfrag.s
--- a/media/libtheora/lib/arm/armfrag.s
+++ b/media/libtheora/lib/arm/armfrag.s
@@ -11,16 +11,22 @@
 ;********************************************************************
 ; Original implementation:
 ;  Copyright (C) 2009 Robin Watts for Pinknoise Productions Ltd
 ; last mod: $Id: armfrag.s 17481 2010-10-03 22:49:42Z tterribe $
 ;********************************************************************
 
 	AREA	|.text|, CODE, READONLY
 
+	; Explicitly specifying alignment here because some versions of
+	; gas don't align code correctly. See
+	; http://lists.gnu.org/archive/html/bug-binutils/2011-06/msg00199.html
+	; https://bugzilla.mozilla.org/show_bug.cgi?id=920992
+	ALIGN
+
 	GET	armopts.s
 
 ; Vanilla ARM v4 versions
 	EXPORT	oc_frag_copy_list_arm
 	EXPORT	oc_frag_recon_intra_arm
 	EXPORT	oc_frag_recon_inter_arm
 	EXPORT	oc_frag_recon_inter2_arm
 
diff --git a/media/libtheora/lib/arm/armidct.s b/media/libtheora/lib/arm/armidct.s
--- a/media/libtheora/lib/arm/armidct.s
+++ b/media/libtheora/lib/arm/armidct.s
@@ -11,16 +11,22 @@
 ;********************************************************************
 ; Original implementation:
 ;  Copyright (C) 2009 Robin Watts for Pinknoise Productions Ltd
 ; last mod: $Id: armidct.s 17481 2010-10-03 22:49:42Z tterribe $
 ;********************************************************************
 
 	AREA	|.text|, CODE, READONLY
 
+	; Explicitly specifying alignment here because some versions of
+	; gas don't align code correctly. See
+	; http://lists.gnu.org/archive/html/bug-binutils/2011-06/msg00199.html
+	; https://bugzilla.mozilla.org/show_bug.cgi?id=920992
+	ALIGN
+
 	GET	armopts.s
 
 	EXPORT	oc_idct8x8_1_arm
 	EXPORT	oc_idct8x8_arm
 
 oc_idct8x8_1_arm PROC
 	; r0 = ogg_int16_t  *_y
 	; r1 = ogg_uint16_t  _dc
diff --git a/media/libtheora/lib/arm/armloop.s b/media/libtheora/lib/arm/armloop.s
--- a/media/libtheora/lib/arm/armloop.s
+++ b/media/libtheora/lib/arm/armloop.s
@@ -11,16 +11,22 @@
 ;********************************************************************
 ; Original implementation:
 ;  Copyright (C) 2009 Robin Watts for Pinknoise Productions Ltd
 ; last mod: $Id: armloop.s 17481 2010-10-03 22:49:42Z tterribe $
 ;********************************************************************
 
 	AREA	|.text|, CODE, READONLY
 
+	; Explicitly specifying alignment here because some versions of
+	; gas don't align code correctly. See
+	; http://lists.gnu.org/archive/html/bug-binutils/2011-06/msg00199.html
+	; https://bugzilla.mozilla.org/show_bug.cgi?id=920992
+	ALIGN
+
 	GET	armopts.s
 
 	EXPORT	oc_loop_filter_frag_rows_arm
 
 ; Which bit this is depends on the order of packing within a bitfield.
 ; Hopefully that doesn't change among any of the relevant compilers.
 OC_FRAG_CODED_FLAG	*	1
